3 import java
.awt
.FontMetrics
;
4 import java
.awt
.Graphics
;
5 import java
.util
.Observable
;
6 import java
.util
.Observer
;
10 import controllers
.SelectionController
;
11 import models
.GraphEdge
;
12 import models
.GraphModel
;
13 import models
.GraphVertex
;
15 public class GraphPanel
extends JPanel
implements Observer
{
16 private static final long serialVersionUID
= 1388592199136335514L;
17 private GraphModel model
;
18 private SelectionController selectionController
;
20 protected GraphPanel(GraphModel model
){
21 this.setSize(500, 400);
22 this.setBackground(Color
.BLUE
);
24 model
.addObserver(this);
27 public void setSelectionController(SelectionController controller
)
29 this.selectionController
= controller
;
32 public void setModel(GraphModel model
){
33 if(this.model
!= null){
34 this.model
.deleteObserver(this);
37 model
.addObserver(this);
38 selectionController
.setModel(model
);
42 public GraphModel
getModel(){
46 public int getDrawTextWidth(String in
)
48 FontMetrics fm
= this.getFontMetrics(this.getFont());
49 int width
= fm
.stringWidth(in
);
54 private void fillBackGround(Graphics g
){
55 g
.setColor(this.getBackground());
56 g
.fillRect(0, 0, getWidth(), getHeight());
59 private void drawEdges(Graphics g
){
60 GraphEdge
[] edges
= model
.getEdges();
61 g
.setColor(Color
.cyan
);
62 for(int i
=0; i
< edges
.length
; i
++){
63 GraphEdge edge
= edges
[i
];
64 GraphVertex
[] vertexes
= edge
.getNodes();
65 g
.drawLine(vertexes
[0].getX() + (vertexes
[0].getWidth()/2),
66 vertexes
[0].getY() + (vertexes
[0].getHeight()/2),
67 vertexes
[1].getX() + (vertexes
[1].getWidth()/2),
68 vertexes
[1].getY() + (vertexes
[0].getHeight()/2));
72 private void drawVertexLine(Graphics g
)
74 // Draw Adding vertex line if needed
75 if(this.selectionController
!= null && this.selectionController
.isAddingEdge()){
77 g
.setColor(Color
.red
);
78 GraphVertex origen
= this.selectionController
.getSelectedVertex();
79 g
.drawLine( origen
.getX() + (origen
.getWidth()/2),
80 origen
.getY() + (origen
.getHeight()/2),
81 selectionController
.getMouseX(),selectionController
.getMouseY());
85 private void drawVertixes(Graphics g
)
87 GraphVertex
[] objects
= model
.getVertexes();
88 for(int i
=0; i
< objects
.length
; i
++){
89 GraphVertex o
= objects
[i
];
90 g
.setColor(Color
.white
);
91 g
.fillRect(o
.getX(), o
.getY(), o
.getWidth(), o
.getHeight());
93 g
.setColor(Color
.red
);
95 g
.setColor(Color
.black
);
97 g
.drawRect(o
.getX(), o
.getY(),o
.getWidth(), o
.getHeight());
98 g
.setColor(Color
.black
);
99 g
.drawString(o
.getName(), o
.getX()+10, o
.getY()+25);
103 public void paintComponent(Graphics g
)
112 public void update(Observable arg0
, Object arg1
) {